package com.yezao.processor.ktFile

import com.yezao.processor.ktFile.apis.KtBody
import com.yezao.processor.ktFile.apis.KtMethod
import java.lang.StringBuilder

/**
 * 一个类的 主体
 * 1、构造方法
 * 2、成员方法
 * 3、静态方法
 * 4、成员变量
 * */
class KtClassBody(val clazsName:String)  {
    //类构造方法
    val constructFuns = ArrayList<KtClassMethod>()

    //成员方法
    val memberFuns = ArrayList<KtClassMethod>()

    //静态方法
    val sFuns = ArrayList<KtClassMethod>()

    //成员变量
    val filedParams = ArrayList<KtFileParam>()

    fun addConstruct(constructFun:KtClassMethod){
        constructFuns.add(constructFun)
    }
    fun addMethod(method:KtClassMethod){
        memberFuns.add(method)
    }
    fun addSMethod(method: KtClassMethod){
        sFuns.add(method)
    }
    fun addFiles(name:String,type:String){
        filedParams.add(KtFileParam("public",name, type))
    }


    override fun toString(): String {
        return StringBuilder().apply {
            append("public class $clazsName {\n")
            for (filedParam in filedParams) {
                append(filedParam.toString())
            }

            for (constructFun in constructFuns) {
                append(constructFun.toString())
            }
            for (sFun in sFuns) {
                append(sFun.toString())
            }
            for (memberFun in memberFuns) {
                append(memberFun.toString())
            }
            append("\n}")
        }.toString()
    }
}